Color transformations need to be applied to images and objects in many instances along an image path. Such transformations are often complex non-linear functions hence, it is impractical to process large images in real-time. It is therefore common to implement such mathematical color transforms as a multi-dimensional look-up-table (LUT). In the color management industry, LUTs are frequently implemented in International Color Consortium (ICC) profiles. In this patent, the term “color profile” will be interpreted as a container for a multidimensional LUT transform and possibly other elements (e.g. a 3×3 matrix, tone reproduction curves, etc.).
Color lookup tables (CLUTs) that provide transformations between various color spaces are extensively utilized in color management, common examples being the transformations from device independent color spaces such as CIELAB to device dependent color spaces (e.g. CMYK) and vice versa. CIELAB is a perceptually based color space specified by the International Commission of Illumination (Commission Internationale d'Eclairage, hence its CIE initialism). The CLUTs are often embedded in the printer hardware for color printers, which require relatively expensive flash memory for the purpose of storage. In such scenarios, the firmware memory requirements for storing the CLUTs can become a concern, particularly as the number of the lookup tables in color devices increases due to the need for supporting multiple color spaces, print media, halftones, preference, etc. The problem of prohibitively large profile or LUT sizes can become even more relevant as many newer color devices, for example, high-end color printers, utilize up to 7 or 8 color separations as opposed to the classical 4 separations. In practice, the look-up-table cannot be prohibitively large because of processor RAM and cache memory constraints.
One prior art approach to reduce storage is to employ sparser sampling along one or more input dimensions of the look-up-table. However, interpolation of sparse data using, for example, a technique such as linear interpolation, can introduce unacceptable error in the transform. Another prior art approach develops lossless compression of the LUT based on entropy coding in order to reduce storage. Such an approach can be efficient for on-chip storage, but the profile or transform must still be decoded back to its original size and loaded into memory for the application of the transform.
Based on the foregoing, it is believed that a need exists for an improved method and system for compressing a color profile to provide significant benefits in storage while allowing for fast real-time operation without loss of generality.